This invention relates to electronic design automation of electronic circuits, specifically to locating where the functional mistakes are in digital circuit designs, using a digital computer, after knowing the existence of the mistakes in the designs.
A digital circuit comprises gates, registers and wires connecting the gates and registers, and a description of a digital circuit can be at behavior level, register transfer level, gate level, transistor level, etc. In a digital circuit, a signal value of a wire at any time is either 0 or 1. When a digital circuit responds to a specific stimulus, the signal value of each wire in the circuit makes a waveform because the value can be different at different times. A subset of the waveforms of all wires in the digital circuit is the circuit behavior. For the purpose of avoiding erroneous chips, it is important to find design mistakes before fabricating the chip. A design mistake is a functional mistake if it causes incorrect circuit behavior regardless the circuit speed.
After discovering the existence of functional mistakes using a verification method, it is necessary to locate the functional mistakes before correcting them. This task of locating mistakes is generally known as debugging. It is more art than science to perform the tasks of locating and correcting the mistakes. A circuit can have many different correct implementations, and therefore there are many ways to fix the same functional mistake. Furthermore, different functional mistakes may cause the same error in the circuit behavior though they may also cause other different errors in the circuit behavior. As the result, correcting functional mistakes involves trial-and-error.
A part of locating functional mistakes is to identify where in the design the functional mistake likely is. If this part is done well, the rest of the work becomes much easier. However, this part normally relies on human decisions and tools are only used to assist. Some tools show the circuit behavior or the design in more understandable ways. Some other tools, normally integrated parts of simulators, allow parts of circuit behavior to follow user commands rather than to be driven by the circuit structure. There are needs for tools providing more direct assistance. Tools moving into the direction of providing further assistance can show direct (the nearest time or the nearest structural connection or the nearest both) cause(s) of a signal value, but none of them can exhaustively show the different combinations of correlated causes of one or more values in waveforms without significant restrictions. This difficulty is from the fact that the influence cones of signals can be very large while different signals can interfere with each other or they can depend on the same source.
Construction of binary decision diagrams for any Boolean functions is well known in the art, but it is not previous applied in interactive debugging of digital circuits.